/**
* File Name: sigaction_test.c
* Auther: Jichang
* Create Time: 2023年10月09日 星期一 20时04分01秒
* sigaction测试
*/
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<signal.h>

void sys_err(const char *str)
{
	perror(str);
	exit(1);
}

/* 捕捉函数，即回调函数 */
void sig_catch(int signo)
{
	if(signo == SIGINT) {
		printf("catch you:%d \n", signo);
	} else if(signo == SIGQUIT) {
		printf("!catch you:%d \n", signo);
	}
	return;
}


int main(int argc, char *argv[])
{
	struct sigaction act, oldact;
	int ret;

	/* 初始化 */
	act.sa_handler = sig_catch; //设置回调函数
	sigemptyset(&(act.sa_mask)); //设置屏蔽字，清空
	act.sa_flags = 0;			//设置默认属性, 默认处理动作

	ret = sigaction(SIGINT, &act, &oldact); //注册信号捕捉函数
	ret = sigaction(SIGQUIT, &act, &oldact);
	if(ret == -1) {
		sys_err("sigaction error");
	}

	while(1);
		
	return 0;
}

